﻿'''
题目描述
日志采集是运维系统的的核心组件。日志是按行生成，每行记做一条，由采集系统分批上报。
如果上报太频繁，会对服务端造成压力;
如果上报太晚，会降低用户的体验；
如果一次上报的条数太多，会导致超时失败。
为此，项目组设计了如下的上报策略：
每成功上报一条日志，奖励1分
每条日志每延迟上报1秒，扣1分
积累日志达到100条，必须立即上报
给出日志序列，根据该规则，计算首次上报能获得的最多积分数。
输入描述
按时序产生的日志条数 T1,T2…Tn，其中 1<=n<=1000，0<=Ti<=100
输出描述
首次上报最多能获得的积分数
示例1
输入
1 98 1
输出
98
说明
T1 时刻上报得 1 分
T2 时刻上报得98分，最大
T3 时刻上报得 0 分
示例2
输入
50 60 1
输出
50
说明
如果第1个时刻上报，获得积分50。如果第2个时刻上报，最多上报100条，前50条延迟上报1s，每条扣除1分，共获得积分为 100-50=50
示例3
输入
3 7 40 10 60
输出
37
说明
T1时刻上报得3分
T2时刻上报得7分
T3时刻上报得37分，最大
T4时刻上报得-3分
T5时刻上报，因为已经超了100条限制，所以只能上报100条，得-23分
解题思路
上报策略：
积分奖励：每成功上报一条日志，可以获得 1 分。
延迟扣分：每条日志每延迟 1 秒上报，会扣除 1 分。
强制上报：当积累的日志数量达到 100 条时，必须立即上报，无法再继续等待更多日志。
例子解析
输入：1 98 1，输出：98
在第1时刻，上报1条日志，获得1分。
在第2时刻，累计生成99条日志（1+98），上报这99条日志，获得99 -1 = 98分（因为第1条日志延迟1秒扣1分，其余98条按时上报不扣分）
在第3时刻，累计生成100条日志（99+1），必须立即上报，获得100 -2 - 98= 0分。
最大积分出现在第2时刻，为98分。
输入：50 60 1，输出：50
在第1时刻，上报50条日志，获得50分。
在第2时刻，累计生成110条日志（50+60），强制上报100条。前50条日志延迟1秒，每条扣1分，最终得分为50分（100 - 50）。
输入：3 7 40 10 60，输出：37
在第3时刻上报，当前为40条，加上前两秒的，总共50条，上报得50分，但是T2的 7条超时了1秒，减7分，T1的3条超时了2秒，减6分，
最后得37分。
'''
#输入描述：
#按时序产生的日志条数 T1,T2…Tn，其中 1<=n<=1000，0<=Ti<=100
#输出描述
#首次上报最多能获得的积分数
#示例1
#输入
#1 98 1
#输出
#98

#读取输入
logs = list(map(int,input().split()))

#遍历日志列表
total_count = 0     #日志总条数
max_score = 0       #最大积分
for i in range(len(logs)):
    #当前日志数为0，跳过
    if logs[i] == 0:
        continue

    total_count += logs[i]
    #从开头遍历日志到当前日志并计算分数
    score = 0
    for j in range(i + 1):
        if total_count >= 100 and i == j:
            score += logs[j] - (total_count - 100)  #计算最后一条日志需加入多少分
        else:
            score += logs[j] - (i - j) * logs[j]    #加上最后一条之前每条日志，并减去相应的延迟分
    #更新最大积分
    if score > max_score:
        max_score = score
    #如果超过100条，跳出
    if total_count >= 100:
        break
#输出最大积分
print(max_score)



